package com.thinta.wind.base

import android.content.Context
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.ViewModelProvider
import com.gyf.immersionbar.ktx.immersionBar
import com.thinta.wind.R

/*********************************************************
 * 版权信息：2021/5/10 11:37北京振中电子技术有限公司版权所有<p>
 * 创建作者：Wind<p>
 * 创建日期：2021/5/10 11:37<p>
 * *******************************************************<p>
 * 更新历史：    作者      日期      更新摘要<p>
 * <p>
 * *******************************************************<p>
 * 类功能说明：<p>
 */
abstract class BaseActivity<VM : BaseModel?, V : ViewDataBinding?> : AppCompatActivity() {

    var mContext: Context? = null

    var dataBinding: V? = null

    var viewModel: VM? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initData()
        initView()
    }

    private fun initData() {
        mContext = this
        dataBinding = DataBindingUtil.setContentView(this, getLayoutRes())
        dataBinding?.let {
            it.lifecycleOwner = this
        }
        viewModel = ViewModelProvider(this, getModelFactory()).get(viewModelClass())
    }

    abstract fun getModelFactory(): ViewModelProvider.NewInstanceFactory

    abstract fun viewModelClass(): Class<VM>//获取 ViewModel 类
    protected abstract fun startListenerData()
    protected abstract fun initView()
    protected abstract fun getLayoutRes(): Int

}